#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
#@@   CHOOSE THE INPUT VARIABLES       @@#
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#

dirreno="/home/nucave/workdir/lattice/RENORMALIZATION/reno"
subdir="TEST/FF/"

dirdata="/home/nucave/workdir/lattice/RENORMALIZATION/"

DO_VALENCE_ANALISIS="yes"

#Gamma and Momentum order convention
gamma="TWISTED"
momentum_order="TXYZ"
convention="TW"

twisted_basis=1

if [ $twisted_basis -eq 1 ] ; then twisted_end="-TW" ; else twisted_end="" ; fi 

#gamma="APE"
#momentum_order="TYZX"
#convention="APE"


#Gauge Fixing and Gauge Action
gauge_fixing="landau"
gauge_action="iwasaki"

# Fermionic Action
Nf=4
action="TwistedMass"

#Choose beta (beta*100)
beta100=195

#Choose L, T | L^3xT=V
L=24
T=48

#Nr=2 -> r0 & r1
Nr=2


#Choose ensemble List
eList=(2)

#Choose theta: p, m
pmList=("m")

# NOa2=1 : uncor
# NOa2=2 : uncor+Oa2g2
# NOa2=3 : uncor+Oa2g2+Oa2g2b

corrOa2print="no"
NOa2=1

#corrOa2print="yes"
#NOa2=3


# Choose: Nmom, conf_ini, jump, Nclust, Nex

if [ $beta100 -eq 195 ]
then
ainv=2.5234
Nmom=139
jump=2
fi


######################
## mom.dat file
########################
echo "1 0 0 0" > mom.dat # boundary conditions
echo "2" >> mom.dat # Nindexmom
if [ $Nmom -eq 139 ]
then
echo "0 3 0 2 0 2 0 2" >> mom.dat
echo "4 7 2 3 2 3 2 3" >> mom.dat
fi

#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#

cd $dirreno/$subdir
beta=$(echo "scale=2; $beta100/100" | bc -l)

sed "s/__GAMMA__/$gamma/g;s/__MOMENTUM_ORDER__/$momentum_order/g" $dirreno/SRC/base_template.h > $dirreno/SRC/base.h


if [ $DO_VALENCE_ANALISIS = "yes" ]
then

echo "compiling"
sh compile.sh Calc_FF_AmpGF_and_Z_TEST
#sh compile.sh Calc_FF_TEST

for e in  ${eList[*]}
do
    if [ $beta100 -eq 195 ]
    then
  	if [ $e -eq 2 ] 
	then 
		#cineca test
		Nmass=1
		conf_ini=503
		Nclust=14
		Nex=2
                Uplaq=0.58
	
		if [ $convention = "APE" ]
		then	
		#ape test
		Nmass=1
		conf_ini=105
		Nclust=14
		Nex=2
		jump=4
		fi
	fi
     fi
     #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
     #@@  CHOOSE THE NUMBER OF MASSES TO BE ANALYSED  @@#
     #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
      if [ $beta100 -eq 195 ]
      then

                       # mass list
                        massList=(0.0085 0.015 0.0203 0.0252 0.0298)
                        # mPCAC val (p,m)
                        mPCAC=(0.0203 -0.0213)

       fi

	for pm in ${pmList[*]}
	do
		epm=${e}${pm}
		echo "@@@@@@@@@@@@@@@@@@@@@@@"
		echo "@@  ensemble=$epm   @@"
		echo "@@@@@@@@@@@@@@@@@@@@@@"
		
		#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
		#@@  CHOOSE THE kappa_sea                        @@#
		#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#

		if [ $beta100 -eq 195 ]
		then
			if [ ${epm} = "2m" ] ; then kappa_sea="0.161229" ; fi

		fi


		#create dirs
		if [ $convention = "APE" ]
		then
	              dir_input="$dirdata/DATA/INPUT-APE/${action}Nf${Nf}/b$beta100/${e}${pm}/"
        	      dir_output="$dirdata/DATA/OUTPUT-APE/TEST$twisted_end/${action}Nf${Nf}/b$beta100/${e}${pm}/"
		else
	              dir_input="$dirdata/DATA/INPUT/${action}Nf${Nf}/b$beta100/${e}${pm}/"
		      dir_output="$dirdata/DATA/OUTPUT/TEST$twisted_end/${action}Nf${Nf}/b$beta100/${e}${pm}/"
		fi

		mkdir -p -v $dir_output/FF_ALLP
		mkdir -p -v $dir_output/FF_SOMEP
		mkdir -p -v $dir_output/Z_ALLP
		mkdir -p -v $dir_output/LAMBDA_ALLP

		for i in `seq 0 $Nmom`; do imom=`printf %03d $i`; mkdir -p -v $dir_output/p$imom ; done

		##############################
		# INPUT OF THE PROGRAMS
		##############################
                #Nmass=${#massList[*]}

		echo $L > input.dat
		echo $T >> input.dat
		echo $Nclust >> input.dat
		echo $dir_output >> input.dat



		args="-Nf=$Nf -beta100=${beta100} -L=$L -T=$T -e=$e -dir_input=$dir_input -dir_output=$dir_output -kappa_sea=$kappa_sea -conf_ini=${conf_ini} -jump=${jump} -Nclust=${Nclust} -Nex=${Nex} -Nmass=$Nmass -Nr=${Nr} -beta=${beta} -Uplaq=${Uplaq} -NOa2=${NOa2} -gauge_fixing=${gauge_fixing} -gauge_action=${gauge_action} -twisted_basis=${twisted_basis}" 	
			echo $args


		#######################


#			time ./Calc_FF_AmpGF_and_Z_TEST $args 
			#time ./Calc_FF_TEST $args
	done # pmList
done #eList
fi

cd $dirreno
